import java.util.ArrayList;
import java.util.List;

public class Escopo {

	private String nome;
	private List<String> variables = new ArrayList<String>();
	private List<String> calledVariables = new ArrayList<String>();
	
	public Escopo(String nome) {
		this.nome = nome;
	}
	
	public void addVariableName(String name) {
		this.variables.add(name);
	}
	
	public void addVariableCall(String name) {
		this.calledVariables.add(name);
	}
	
	public List<String> getVariables() {
		return variables;
	}
	
	public List<String> getCalledVariables() {
		return calledVariables;
	}

	public String getNome() {
		return nome;
	}

	public void validate(List<String> erros) {
		
		for (String var : calledVariables) {
			String erro = "VariavelIndefinida:"+var; 
			if (!variables.contains(var) && !erros.contains(erro)) {
				erros.add(erro);
			}
		}
		
//		if (!variables.containsAll(calledVariables)) {
////			System.out.println(calledVariables);
////			System.out.println(variables);
////			System.out.println("Codigo invalido por chamada de variavel que nao existe!");
//			return false;
//		}
////		System.out.println("Codigo valido!");
//		return true;
	}
	
	public void dados() {
		System.out.println("No dados do escopo de " + this.nome);
		System.out.println("Variaveis: " + variables);
		System.out.println("Chamadas: " + calledVariables);
		System.out.println("Fim do dados Escopo");
	}
	
}
